home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 36
/
Amiga Format CD36 (1999-01-22)(Future Publishing)(GB)[!][issue 1999-02].iso
/
-seriously_amiga-
/
graphics
/
gfx3d.library
/
docs
/
programmazione.txt
< prev
next >
Wrap
Text File
|
1998-12-12
|
4KB
|
87 lines
-------------------------------------------------------------------------------
DIRETTIVE DI PROGRAMMAZIONE
-------------------------------------------------------------------------------
Programmare la libreria gfx3d.library è estremamente semplice. Potenti
funzioni costituiscono l'interfaccia di programmazione della libreria. Al
programmatore non è richiesta alcuna conoscenza di grafica tridimensionale,
quali la manipolazione delle matrici nella graphics pipeline, la trasformazione
delle coordinate (traslazione, rotazione, ecc...) della scena visualizzata e
così via. Compito del programmatore è solo quello di definire le strutture dati
necessarie e modificare le loro proprietà nel tempo. Al tutto il resto penserà
la libreria.
IMPORTANTE:
Nella versione attuale è possibile aprire la libreria solo da un programma
per volta. Successive aperture falliranno.
Normalmente, il codice che fà uso della libreria gfx3d.library è suddivisibile
in due sezioni principali.
La prima cosa da fare è infatti definire le strutture dati della scena.
Identificheremo questa fase come 'sezione di definizione' di una struttura
dati.
Successivamente, una volta definite tutte le strutture dati necessarie, sarà
possibile utilizzare tali strutture al fine di aggiornare dinamicamente la
scena visualizzata. Identificheremo questa fase come 'sezione di gestione'
delle strutture dati definite.
Attualmente (gfx3d.library v2.x), una sezione di definizione inizia sempre con
la funzione GFXBegin() e termina con la funzione GFXEnd(). Le struttura dati
necessarie ad un corretto funzionamento della libreria sono le seguenti:
- una telecamera (Camera), che fornisce la vista della scena;
- un ambiente (Environment), contenente gli oggetti da visualizzare. Ogni
telecamera fà infatti riferimento ad un ambiente;
- uno o più oggetti (Object), costituenti a tutti gli effetti ciò che si deve
vedere nella scena;
- uno o più fotogrammi (Frame), costituenti quello che ogni oggetto
rappresenta;
- uno o più poligoni (Polygon), dei quali sono composti i singoli fotogrammi.
A partire dalla versione 2.0 è stata aggiunta la seguente struttura dati:
- una tabella delle sfumature (ShadeTable), associata all'ambiente ed
utilizzata per calcolare le sfumature di ogni colore.
Le precedenti strutture dati si riferiscono solamente ad una scena da
visualizzare. La libreria è però in grado di gestire un numero qualunque di
scene contemporaneamente. Per ogni scena vanno quindi definiti una Camera, un
Environment ed uno o più Objects. Solo le strutture Frames e ShadeTables
possono essere condivise da più scene.
Le funzioni che vengono utilizzate in una sezione di gestione sono le funzioni
GFXModify...(), le quali si occupano di modificare i parametri delle varie
strutture dati, e le funzioni GFXUpdate...(), che sono adibite ad aggiornare la
scena e l'output video.
I parametri modificabili di una determinata struttura dati sono solo quelli
specificati dalle funzioni GFXModify...(). E' contro le specifiche modificare
direttamente le strutture dati presenti in memoria, in quanto si è voluta
utilizzare una rappresentazione assimilabile al 'tipo di dato astratto' proprio
della programmazione ad oggetti. In questo modo, qualsiasi modifica interna
delle strutture dati non si ripercuote all'esterno. E' possibile infatti che
differenti versioni e/o revisioni della libreria utilizzino una
rappresentazione interna delle strutture dati differente da quella corrente, al
fine di ottimizzare la velocità generale.
Lo stesso ragionamento si applica alla rappresentazione interna dei numeri
reali. Dal momento che non tutti gli Amiga dispongono di una FPU, attualmente
i numeri reali vengono rappresentati in virgola fissa nel formato 16bit/16bit .
E' però possibile che diverse versioni e/o revisioni della libreria supportino
l'FPU di alcuni processori (ad esempio in versioni per lo 060), quindi, per
specifica di compatibilità, è consigliato l'utilizzo delle numerose funzioni
matematiche offerte dalla libreria. In ogni caso, è possibile sapere il
supporto o meno dell'FPU tramite la funzione GFXFeatures(). Si noti però che il
tempo perso in chamate alle funzioni matematiche è TOTALMENTE TRASCURABILE
rispetto al tempo necessario a visualizzare la scena...